package org.huawei260.OD260;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/8/21-22:43
 * @Description:
 * 一辆运送快递的货车，
 * 运送的快递放在大小不等的长方体快递盒中，
 * 为了能够装载更多的快递同时不能让货车超载，
 * 需要计算最多能装多少个快递。
 * 注：快递的体积不受限制。
 * 快递数最多1000个，货车载重最大50000。
 *
 * 输入描述
 * 第一行输入每个快递的重量
 * 用英文逗号隔开
 * 如 5,10,2,11
 * 第二行输入货车的载重量
 * 如 20
 *
 * 输出描述
 * 输出最多能装多少个快递
 * 如 3
 *
 * @version: 1.0
 */
public class O0012_快递货车 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();

		String[] strs = str.split(",");

		int[] arr = new int[strs.length];
		for (int i = 0; i < strs.length; i++) {
			arr[i] = Integer.parseInt(strs[i]);
		}

		int max = sc.nextInt();

//		System.out.println(findMax(arr, max));
		System.out.println(findMaxDP(arr, max));
	}

//	private static int findMax(int[] packageWeights, int truckCapacity) {
//		// 计算最多能装多少个快递
//		int maxPackages = 0;
//		int currentWeight = 0;
//		for (int weight : packageWeights) {
//			if (currentWeight + weight <= truckCapacity) {
//				currentWeight += weight;
//				maxPackages++;
//			}
//		}
//		return maxPackages;
//
//	}

	private static int findMaxDP(int[] packageWeights, int truckCapacity) {
		// dp[i] 表示在不超过 i 重量时，最多能装的快递数量
		int[] dp = new int[truckCapacity + 1];
		// 初始化dp数组，0重量时可以装0个快递
		Arrays.fill(dp, 0);

		for (int weight : packageWeights) {
			for (int j = truckCapacity - weight; j >= 0; j--) {
				// 如果当前重量加上快递重量不超过卡车载重，则更新dp数组
				dp[j + weight] = Math.max(dp[j + weight], dp[j] + 1);
			}
		}

		// dp[truckCapacity] 存储的是不超过卡车载重量时，最多能装的快递数量
		return dp[truckCapacity];
	}


}
